package org.test.javaCharacteristic.ObjectTest;

import java.util.ArrayList;
import java.util.List;

import junit.framework.Assert;

import org.junit.Test;

/**
 * list.add同一对象，现在使用clone
 * 
 * @author game
 * 
 */
public class SameObject {

	@Test
	public void test() {

		ArrayList list1 = new ArrayList<StringBuffer>();

		StringBuffer sb1 = new StringBuffer("sb1");
		list1.add(sb1);

		// 两个对比
		List listall = new ArrayList();
		List listall2 = new ArrayList();

		listall.add(list1.clone()); //这里产生了和list1值相同的另一个对象
		listall2.add(list1);

		Assert.assertEquals(listall.toString(), "[[sb1]]");
		Assert.assertEquals(listall2.toString(), "[[sb1]]");
		
		for (int i = 2; i < 4; i++) {
			list1.add(new StringBuffer("sb" + i));
		}

		/*
		 * 以下不同,说明了clone是产生了不同的对象
		 */
		Assert.assertEquals(listall.toString(), "[[sb1]]");
		Assert.assertEquals(listall2.toString(), "[[sb1, sb2, sb3]]");
	}
}
